package net.xdclass.util;

import net.xdclass.enums.BizCodeEnum;
import net.xdclass.exception.BizException;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ApiRelationGetUtil {

    /**
     * 获取参数或获取关联参数
     * 正则匹配是否为关联参数表达式 如不是则返回原参数
     * @param string 关联参数
     * @return 关联参数
     */
    public static String getParameter(String string) {
        String newString = string;
        Pattern pattern = Pattern.compile(ApiRegexpUtil.REGEXP);
        Matcher matcher = pattern.matcher(string);
        if (matcher.find()) {
            String parameter = matcher.group(1);
            // 取参数
            String fetched = ApiRelationContext.get(parameter);
            if (fetched == null) {
                // 关联参数不存在
                throw new BizException(BizCodeEnum.API_RELATION_NOT_EXIST);
            }
            newString = string.replaceAll(ApiRegexpUtil.byName(parameter), fetched);
        }
        return newString;
    }

}
